package units;

import java.io.Serializable;

public class Interval implements Serializable {
	private static final long serialVersionUID = 596164640891088103L;
	
	private double inicio, fim;
	private boolean incInicio, incFim;
	
	public Interval() {
		this(0, 0);
	}
	
	public Interval(double inicio, double fim) {
		this(inicio, fim, true, true);
	}
	
	public Interval(double inicio, double fim, boolean incInicio, boolean incFim) {
		this.inicio = inicio;
		this.fim = fim;
		this.incInicio = incInicio;
		this.incFim = incFim;
		
		this.arrumar();
	}
	
	public boolean contem(double valor) {
		return !(valor < inicio || (!incInicio && valor==inicio) || valor > fim || (!incFim && valor==fim));
	}
	
	public double getFim() {
		return fim;
	}
	
	public double getInicio() {
		return inicio;
	}
	
	public boolean isIncFim() {
		return incFim;
	}
	
	public boolean isIncInicio() {
		return incInicio;
	}
	
	public void setFim(double fim) {
		this.fim = fim;
		this.arrumar();
	}
	
	public void setInicio(double inicio) {
		this.inicio = inicio;
		this.arrumar();
	}
	
	public void setIncInicio(boolean incInicio) {
		this.incInicio = incInicio;
	}
	
	public void setIncFim(boolean incFim) {
		this.incFim = incFim;
	}
	
	protected void arrumar() {
		if (this.inicio > this.fim) {
			double aux = this.fim;
			this.fim = this.inicio;
			this.inicio = aux;
		}
	}
}
